package sort.bubbleSort;

/**
 * 冒泡排序
 * https://blog.csdn.net/ThinkWon/article/details/101534473
 * 思想
 *      基本思想: 冒泡排序，类似于水中冒泡，较大的数沉下去，较小的数慢慢冒起来，假设从小到大，即为较大的数慢慢往后排，较小的数慢慢往前排。
 *      直观表达：每一趟遍历，将一个最大的数移到序列末尾。
 *
 * 算法描述
 *      比较相邻的元素，如果前一个比后一个大，则交换之。
 *      第一趟排序第1个和第2个一对，比较与交换，随后第2个和第3个一对比较交换，这样直到倒数第2个和最后1个，将最大的数移动到最后一位。
 *      第二趟将第二大的数移动至倒数第二位
 *      ......
 *      因此需要n-1趟；
 *
 * @author corn
 * @create 2020-11-01-9:34
 */
public class BubbleSort {
    public void bubbleSort(int[] arr){
        //表示我们总共需要遍历多少次
        for(int i = 0; i < arr.length -1; i++){
            //这里减i是因为最后的i个数是已经排好序的，就不用再管他
            for(int j = 0 ; j < arr.length- i- 1; j++){
                //比较相邻的元素，如果前一个比后一个大，则交换之
                if(arr[j] > arr[j+1]){
                    int temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }
            }
        }
    }
}
